package com.shanzhu.parking.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shanzhu.parking.entity.Card;
import com.shanzhu.parking.entity.query.CardQuery;

import java.util.List;

/**
 * IC卡服务接口
 */
public interface ICardService extends IService<Card> {

    /**
     * 分页查询IC卡列表
     * 
     * @param cardQuery 查询条件
     * @return 分页结果
     */
    IPage<Card> getCardList(CardQuery cardQuery);
    
    /**
     * 检查卡号是否存在
     * 
     * @param cardNo 卡号
     * @return 是否存在
     */
    boolean checkCardNoExists(String cardNo);
    
    /**
     * 根据关键词搜索用户
     * 
     * @param query 搜索关键词
     * @return 用户列表
     */
    List<Object> searchUsers(String query);
    
    /**
     * 开卡
     * 
     * @param username 用户名
     * @param cardNo 卡号
     * @param icType 卡类型
     * @param balance 初始余额
     * @return 开卡结果
     */
    Card openCard(String username, String cardNo, String icType, Double balance);
    
    /**
     * IC卡挂失
     * 
     * @param cardId 卡片ID
     * @return 操作结果
     */
    boolean cardLoss(Long cardId);
    
    /**
     * IC卡解挂
     * 
     * @param cardId 卡片ID
     * @return 操作结果
     */
    boolean cardUnLoss(Long cardId);
    
    /**
     * IC卡注销
     * 
     * @param cardId 卡片ID
     * @return 操作结果
     */
    boolean cardCancel(Long cardId);
    
    /**
     * IC卡充值
     * 
     * @param cardNo 卡号
     * @param amount 充值金额
     * @return 操作结果
     */
    boolean recharge(String cardNo, Double amount);
}
